package com.kaifamiao.reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public class AccessStaticField {

    public static void main(String[] args) throws Exception {

        final Class<?> x = Sheep.class;

        final Field f = x.getDeclaredField( "school" );
        final int mod = f.getModifiers();

        // 若 f 对应的字段不是 static 修饰的
        if( !Modifier.isStatic( mod ) ) {
            return;
        }

        // 若 f 对应的字段不是 public 修饰
        if( !Modifier.isPublic( mod ) ) {
            f.setAccessible( true );
        }

        // 获得 x 类中 f 字段的值
        Object value = f.get( x ); // Object value = Sheep.school;
        System.out.println( value );

        // 为 x 类中 的 f 字段赋值
        f.set( x , "小肥羊火锅" ); // Sheep.school = "小肥羊火锅";

        value = f.get( x ); // Object value = Sheep.school;
        System.out.println( value );

    }

}
